package com.cskaoyan.javase.basic._1identifier;

/**
 *  问题1：什么是标识符？
 *  问题2：标识符有什么用？
 * 上面已经说过了，标识符是一个表示名字的字符串。
 *  问题3：需要标识符起名字的常见结构有哪些？
 * 主要有：
 * 类名（包括后面会学习的接口名、注解名等）
 * 方法名（main就是一个方法名）
 * 变量名
 * 包名
 *
 * 1.标识符命名的语法要求:
 * 标识符的开头必须是：
 * 字母（A~Z 和 a~z）
 * 下划线（_）
 * 美元符号（$）
 * Unicode 字符集中编号为0xC0以及它后面的所有符号(很明显是包括中文的)
 *
 * 标识符的组成必须是：
 * 数字（0~9）
 * 字母（A~Z 和 a~z）
 * 美元符号（$）
 * 下划线（_）
 * Unicode 字符集中编号为0xC0以及它后面的所有符号
 *
 * 标识符的命名规范中,最基本的:
 * 驼峰命名法:
 * 小驼峰式命名法
 * 多个单词组合成一个字符串
 *      第一个单词的首字母 小写 。
 *      从第二个单词开始，首字母都要大写。
 * 例如：myName，myFirstJavaProgram,myStudent,age,name
 *
 * 大驼峰式命名法
 * 多个单词组合成一个字符串
 *      第一个单词的首字母 大写 。
 *      从第二个单词开始，首字母都要大写
 * 例如：MyName，MyFirstJavaProgram,MyStudent,Student,detail,Test
 * 具体来说:
 * 分类别来说：
 *      1.类名（包括后面会学习的接口名、注解名等）应该使用大驼峰命名法。
 *      2.变量和方法的命名标识符应该使用小驼峰命名法。
 *      3.包名的命名：
 *          多数公司开发的包名会以反转公司的域名作为开头。
 *          例如在百度做开发，项目的包名开头应该是com.baidu.xxx
 *          王道就是com.cskaoyan.xxx
 *          包名的单词字母应该全部小写，禁止使用大写。
 *
 * 注意事项/补充:
 *      1.标识符的命名开头和结尾都禁止使用下划线"_"和美元符号"$"。
 *          实际上,Java程序而言,是非常少见使用"_"和"$"作为标识符组成的
 *          比如my_student_age这种写法,不要在Java中出现.
 *
 *      2.任何标识符的命名都禁止使用莫名其妙的字母组合、拼音或者拼音英文组合，更不能直接使用中文。
 *      比如ceshi,abcd之类的都是不允许的.
 *      特殊地如baidu、beijing或者和业务相关的拼音除外。
 *
 *      3.标识符的命名尽量使用合法的、拼写准确的英文单词，核心的追求是"见名知意"。
 *      比如一个好的变量命名应该能够让人通过名字就知道，该变量的作用。
 *      更进一步说,如果已经明确的知道了一个结构的作用
 *          那么在给这个结构起名的时候,就应该用对应的英文单词描述它
 *          比如学生类就是class Student
 *          比如名字这个变量,就是String name
 *          比如一个方法是为了求最大值的,那么方法名就叫getMaxValue
 *
 *
 * @since 15:03
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int age = 18;

        // 100是一个十进制数
        int a = 100;
        // 0100是一个八进制数
        // Octal integer '0100'
        int b = 0100;

        // 以"0b"开头表示二进制数
        int c = 0B1010;

        // 以"0x"开头表示十六进制数
        int d = 0x100;

        // int 0abc;
        // Non-ASCII characters in an com.cskaoyan.javase.basic._1identifier.
        // 言下之意是,应该使用ASCII码表中的字符给标识符起名字
        int 长风 = 100;

        int Class;

        // int DataClass#;
        // int _98.3;
        // 空格,回车,换行等看起来起着控制作用,但实际上它们也是一种字符,而且都在ASCII码表中
        // int Hello  World;

        int 好きだ;
    }
}
// 学生类
class Student{}
// 单词拼写错误,单词检查
class Studetn{};
